Distribution management of intelligent agents using distribution control information

ABSTRACT

An apparatus, program product, and method utilize distribution control information associated with intelligent agents to manage the distribution of such intelligent agents. Such distribution management may be incorporated into a dynamic, automated, extensible and flexible intelligent agent-based product support “framework” to facilitate the provision of product support services to customers of computer-related products. In such a framework, agent platforms may be utilized on both a customer computer and a product support computer, with different agents configured to execute on one or both of such computers.

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application is a divisional of U.S. patent application Ser.No. 10/021,203, filed on Oct. 30, 2001 by Joseph Philip Bigus et al. andentitled “PRODUCT SUPPORT OF COMPUTER-RELATED PRODUCTS USING INTELLIGENTAGENTS”, the disclosure of which is incorporated by reference herein.

FIELD OF THE INVENTION

[0002] The invention is generally related to computers and computersoftware, and in particular to computer software suitable for use inproviding computer-assisted product support of computer-relatedproducts.

BACKGROUND OF THE INVENTION

[0003] The Internet has grown at a remarkable pace, and has becomefirmly entrenched in nearly all aspects of society. Whereas the Internetinitially was limited to purely academic and government endeavors, theInternet has now become an important avenue of commercial activity, notto mention an important source of educational, commercial andentertainment-related information. Moreover, in addition to simplyoperating as a source of information, the Internet provides a mechanismfor bringing together individuals and entities from across the globe. Asan example, for business enterprises, the Internet provides the abilityto interact electronically with customers, as well as suppliers,distributors and other business partners. Even in non-commercial areas,the Internet enables individuals sharing common interests and avocationsto interact and share information with one another.

[0004] Of particular importance, the Internet often provides businessenterprises with the ability to interact electronically with theircustomers to provide a number of value added services for thosecustomers.

[0005] For example, various Internet-based technologies have beendeveloped to enhance the product support services provided by businessesto their customers. Perhaps not unexpectedly, the manufacturers,developers and other providers of computer-related products such ascomputers, peripherals, networking equipment, computer software, andother hardware and/or software products have taken the lead in utilizingInternet technologies to enhance the product support services theyprovide for their customers.

[0006] Conventional Internet-based product support technologies havefocused primarily on providing on-line access to product supportinformation, as well as providing on-line access to downloadablesoftware patches, service packs, drivers, updates and the likesubsequent to release of a computer-related product. In the formerinstance, users are often permitted to search knowledge bases to locateinformation about particular problems experienced by customers, as wellas potential solutions, workarounds, and the like. In the latterinstance, users may either be required to periodically check amanufacturer's website for new updates, or in the alternative, amanufacturer may find an update sufficiently important to warrantnotifying customers of the presence of new updates via email or regularmail.

[0007] Still other manufacturers support on-line “communities” such asnews groups or forums, so that users can interact with one another (oreven with a manufacturer's product support personnel) to ask questionsand obtain solutions. Such communities are also typically searchable byusers so that the solutions to particular questions can be found withouthaving to pose the questions to the communities anew. In still otherenvironments, real-time assistance, such as interactive chat sessions,may be used to enable customers to obtain useful information from aproduct manufacturer.

[0008] While conventional product support technologies often providesome degree of assistance to customers, in many instances the manualprocess of searching knowledge bases, downloading patches, reconfiguringsystems, etc., becomes excessively burdensome. Furthermore, thepotential problems experienced by customers continue to increase in bothnumber and complexity, often necessitating even more manual frequentinteraction with product support technologies.

[0009] In particular, many computer systems incorporate numeroushardware and software components, many of which are supplied by multiplevendors. And with the advent of “open” systems, which permit theproducts of third party vendors to be installed into a particularmanufacturer's computer systems, often without any certification orexplicit acceptance by the manufacturer, many manufacturers are simplyunable to adequately test all permutations and combinations of hardwareand software solutions that customers may have installed in theirparticular installations. Adding to this difficulty are the relativelyshort product development cycles imposed by the marketplace, whicheffectively ensure that at least some incompatibilities will arisesubsequent to any major release of a computer-related product.

[0010] To address some of these difficulties, various types of computersoftware have been utilized to better automate the provision of productsupport. For example, some software vendors utilize remote controlsoftware that allows product support personnel to remotely connect to acustomer's computer and permit the personnel to remedy any problemstherewith, e.g., by perusing and correcting configuration settings on acustomer's computer.

[0011] As another example, automated update programs have been developedfor the purpose of analyzing a particular installation to determine whatcurrent software is installed, comparing this information with adatabase of known updates to that software, and then automating thedownload and installation of any uninstalled updates. In someenvironments, the update programs are implemented using intelligentagents that are dispatched, or transmitted, to a particular customer'sinstallation.

[0012] An intelligent agent, in general, is configured to operate muchlike software-implemented “assistant” to automate and simplify certaintasks in a way that hides its complexity from a user. An intelligentagent is typically characterized by the concept of delegation, where auser, or client, entrusts an agent to handle tasks with at least acertain degree of autonomy. Intelligent agents operate with varyingdegrees of constraints depending upon the amount of autonomy delegatedto them by a user.

[0013] Intelligent agents may also have differing capabilities in termsof intelligence, mobility, and agency. Intelligence is generally theamount of reasoning and decision making that an agent possesses. Thisintelligence can be as simple as following a predefined set of rules, oras complex as learning and adapting based upon a user's objectives andthe agent's available resources. An intelligent agent's intelligence orskill as applied to a specific field or function is often referred to asthe domain knowledge for that agent.

[0014] Some intelligent agents are also characterized as being “mobile”,by virtue of possessing the ability to be passed through a network andexecute on different computer systems. Thus, while some agents may bedesigned to stay on one computer system and may never be passed todifferent machines, other agents may be mobile in the sense that theyare designed to be passed from computer to computer while performingtasks at different stops along the way. To facilitate the distributionof agents and their interaction, significant development work has beendirected toward standardized agent communities, where agents areconfigured to execute on standardized agent “platforms” and communicateaccording to standardized messaging protocols.

[0015] Agents have traditionally found a number of uses in a widevariety of applications, including systems and network management,mobile access and management, information access and management,collaboration, messaging, workflow and administrative management, andadaptive user interfaces. Another important use for agents is inelectronic commerce, where an agent may be configured to seek out otherparties such as other users, computer systems and agents, conductnegotiations on behalf of their client, and enter into commercialtransactions.

[0016] Despite these usages of intelligent agents, in the field ofproduct support, intelligent agents have yet to find widespreadacceptance outside of the relatively narrow area of automating softwareupdates. Of note, software updates most often result from some prioridentification of various errors that require correction, followed byresolution of such problems through the development of new program codethat corrects such errors. To date, the identification of errors oftenresults from customer complaints or questions, which is typicallycollected manually by product support personnel in connection withresolving customer problems. It is often only after individual customersraise issues, and these issues are individually resolved by productsupport personnel, that global solutions to the issues are created andthen distributed to other customers. Thus, even though the actualdownload of software updates may be somewhat automated in someenvironments, the underlying problem determination, problem sourceidentification, and problem resolution steps that ultimately result inthe generation of such software updates are still predominantly manualand labor-intensive processes.

[0017] Given the ever-increasing complexity of computer systems,components and software, it is anticipated that product support willcontinue to place an increasingly greater burden on manufacturers anddevelopers of many computer-related products, thus driving up overheadand cutting into margins. A need therefore exists for utilizingincreased automation in connection with the provision of productsupport, particularly in the areas of problem determination,identification and resolution. It is further anticipated that increasedusage of intelligent agents in the provision of product support canaddress many of the burdens and inefficiencies that result fromconventional product support efforts, and thus a need also exists for amanner of facilitating the penetration of intelligent agents intoproduct support environments.

SUMMARY OF THE INVENTION

[0018] The invention addresses these and other problems associated withthe prior art by providing an apparatus, program product, and methodthat utilize a dynamic, automated, extensible and flexible intelligentagent-based product support “framework” that facilitates the provisionof product support services to customers of computer-related products.

[0019] In particular, the herein-described framework typicallyincorporates a distributed agent-based product support system includingagent platforms that are utilized on both product support and customersites to support multiple platforms upon which product support agentsmay reside to provide various product support operations across andthroughout the system. Consistent with one aspect of the invention,therefore, a product support system may be provided in which first andsecond agent platforms are configured to execute respectively on acustomer computer and a product support computer, and where first andsecond product support intelligent agents are configured to performproduct support operations in connection with a computer-relatedproduct, with one such agent being capable of being dispatched to thecustomer computer for execution by the first agent platform, and withthe other such agent capable of being executed by the second agentplatform.

[0020] The herein-described framework also typically supports theability to utilize cross-customer operational data in the determination,identification and/or remediation of potential problems or otherundesirable operational conditions in and/or associated with acomputer-related product, as well as to facilitate the distribution ofremedial actions to multiple customers. For example, consistent withanother aspect of the invention, product support for a computer-relatedproduct may be provided by collecting operational data from a pluralityof customer computers that utilize the computer-related product,identifying an undesirable operational condition associated with thecomputer-related product from the collected operational data, creating aproduct support intelligent agent configured to remedy the undesirableoperational condition, and distributing the product support intelligentagent to at least first and second customer computers from the pluralityof customer computers to remedy the undesirable operational condition inthe first and second customer computers.

[0021] As another example, intelligent agent technology may also beincorporated in the aforementioned framework to enhance the automatedanalysis of cross-customer operational data, and thus facilitate theidentification of undesirable operational conditions associated with acomputer-related product. Therefore, consistent with yet another aspectof the invention, product support for a computer-related product may beprovided by collecting operational data from a plurality of customercomputers that utilize the computer-related product during operation ofthe plurality of customer computers, analyzing the operational data fromthe plurality of customer computers using at least one intelligentagent, and identifying as a result of the analysis an undesirableoperational condition associated with the computer-related product in atleast one of the customer computers.

[0022] Given the distributed nature of the herein-described framework,it may also be desirable to provide distribution controls to assist inthe effective management of intelligent agents in connection withproviding product support of a computer-related product. In particular,intelligent agents may have different goals and capabilities, and maypresent certain risks if used by inexperienced users and/or insituations in which they were not intended to be used. As such, it maybe desirable to associate distribution control information with certainintelligent agents to limit the ability of such intelligent agents to bedistributed for execution in undesirable environments. Therefore,consistent with a further aspect of the invention, intelligent agentsmay be associated with distribution control information that definesdistribution rights to such intelligent agents, whereby access to suchintelligent agents is controlled in response to requests based upon thedistribution control information associated with such intelligentagents.

[0023] It may also be desirable to incorporate support for intelligentagents supplied by different vendors into the herein-describedframework. In particular, due to the relatively open nature of manycomputer environments, many such environments incorporate hardwareand/or software components that are supplied by different vendors.Moreover, in many circumstances, incompatibilities between suchcomponents can result in errors or degraded system performance. Often,too, the incompatibilities may require corrective actions to be taken inconnection with multiple components. As such, consistent with anadditional aspect of the invention, product support for acomputer-related product may be provided by executing first and secondintelligent agents to respectively perform first and second tasksassociated with remedying an undesirable operational conditionassociated with a customer computer that utilizes the computer-relatedproduct, where the first and second intelligent agents are respectivelyprovided by first and second vendors that supply first and secondcomponents associated with the computer-related product.

[0024] It will be appreciated that the various aspects of the inventiondiscussed above may be utilized either independently or collectivelywith one another in various embodiments of the invention. The inventionis therefore not limited to any specific combination of the variousaspects discussed above.

[0025] These and other advantages and features, which characterize theinvention, are set forth in the claims annexed hereto and forming afurther part hereof. However, for a better understanding of theinvention, and of the advantages and objectives attained through itsuse, reference should be made to the Drawings, and to the accompanyingdescriptive matter, in which there is described exemplary embodiments ofthe invention.

BRIEF DESCRIPTION OF THE DRAWINGS

[0026]FIG. 1 is a block diagram of a distributed agent-based productsupport system consistent with the invention.

[0027]FIG. 2 is a block diagram of an alternate customer installation tothat illustrated in FIG. 1, wherein a supported product is a hardware orsoftware component resident on a computer upon which is also resident anagent server.

[0028]FIG. 3 is a block diagram of another alternate customerinstallation to that illustrated in FIG. 1, wherein a supported productis a hardware or software component that is external to a computer uponwhich is resident an agent server.

[0029]FIG. 4 is a block diagram of the principal software componentsutilized in providing product support for a customer by a vendor in thedistributed agent-based product support system of FIG. 1.

[0030]FIG. 5 is a flowchart illustrating an exemplary sequence ofoperations suitable for remedying a customer problem in the distributedagent-based product support system of FIG. 1.

[0031]FIG. 6 is a block diagram illustrating a collection of softwarecomponents suitable for use in implementing the sequence of operationsillustrated in FIG. 5.

[0032]FIG. 7 is a block diagram illustrating a collection of softwarecomponents suitable for use in implementing an agent framework forhosting the pools of agents in the distributed agent-based productsupport system of FIG. 1.

[0033]FIG. 8 is a flowchart illustrating an exemplary sequence ofoperations suitable for publishing an agent in the distributedagent-based product support system of FIG. 1.

[0034]FIG. 9 is a block diagram illustrating an exemplary interaction ofagents from multiple vendors in collectively remedying a customerproblem in the distrusted agent-based product support system of FIG. 1.

[0035]FIG. 10 is a block diagram of an exemplary product support systemsuitable for tuning the performance of a groupware server in a mannerconsistent with the invention.

DETAILED DESCRIPTION

[0036] The embodiments described herein utilize a dynamic intelligentagent framework to facilitate the provision of product support tocomputer-related products. In many embodiments, human expertise may becaptured and incorporated into intelligent agents, with a dynamicframework utilized to provide access to a library of such agentspossessing functionalities in the areas of data collection andmonitoring, data analysis, and problem resolution or remediation.Through such a framework, costs may often be reduced through ensuringthat the latest problem analysis is deployable, and by testing forproduct quality by focusing across the most common uses and expandingdiagnostics in the field. Moreover, product value can be added throughthe provision of off-release support facilities, as well as the abilityto modify agents between releases based upon real customer experiencesand situations.

[0037] In the embodiments discussed hereinafter, a distributedagent-based product support system is described in which agent serversare distributed between a vendor and one or more customers for thepurpose of supporting computer-related products for such customers.Advantageously, agents are permitted to run on the back-end/supportcomputers, directly on customer computers, or on both, and due to themobile nature of some agents, agents can be dispatched (or brought to)the data necessary for monitoring purposes, or agents can pull such datato them for collection and analysis via remote access of a particularsystem.

[0038] Moreover, in many embodiments, off-release delivery of agents issupported, so that problems discovered after a release of a product canbe addressed quickly and in a cost effective manner. Furthermore,operational data of multiple customers can be collected and analyzed,often using different artificial intelligence-based logic, to enable theresolution of problems or provision of solutions based upon a widevariety of customers, customer installations, situations, etc. Also, aswill become more apparent below, through the use of advanced learningtechniques, self-learning is often possible, based on an individualenvironment or on an “aggregate” of environments. In many instances,many of the product support tasks that were once manual operations canbe automated, thus improving product quality and saving significantcosts in the areas of product determination and problem resolution.

[0039] In addition, the framework described below provides the abilityto encapsulate agents from multiple parties or entities, and otherwiseutilize multiple agents to collectively perform tasks that comprisecomplete solutions to a customer problem. Agents can be partitionedbased on their assigned tasks and required domain knowledge, and agentsmay call various sub-agents to handle specific tasks, or in thealternative, multiple agents may be combined into a single agent toaddress a particular customer problem. Through this “modular” approach,agents may be constructed from multiple pre-built agents or modules,thereby often saving substantial development time and effort.

[0040] Turning to the drawings, wherein like numbers denote like partsthroughout the several views, FIG. 1 illustrates a distributedagent-based product support system 10 consistent with the invention. Inimplementing such a distributed system, a vendor, or product supportsite 12 is interfaced with a plurality of customer sites 14 (forcustomers 1 . . . N) to provide product support for a plurality ofsupported products purchased or otherwise acquired by each customer. Tosupport distributed agent-based product support, a support agent server16 is resident at the vendor site, while product agent servers 18 areillustrated as resident on supported products at each customer site. Itshould appreciate that the vendor, as well as each customer, may havemultiple sites interfaced within product support system 10, and thatmultiple vendors may be interfaced within the product support system aswell.

[0041] In the illustrated implementation of FIG. 1, the supportedproduct is a computer, e.g., a multi-user computer such as an AS/400 oreServer iSeries midrange computer available from International BusinessMachines Corporation. Moreover, in this implementation, the supportedproduct additionally hosts the customer site-based product supportcomponents for system 10, e.g., the product support server 18. As willbe discussed in greater detail below, however, a wide variety of othercomputer-related products may be supported using system 10 withoutdeparting from the spirit and scope of the invention.

[0042] Various manners of interconnecting support server 16 and productservers 18 may be used consistent with the invention. For example, ateach site, an internal network 20, 22 such as a local area network, maybe coupled to the respective server 16, 18. Other computers, e.g.,workstations 24, 26, may also be coupled to networks 20, 22, and provideuser access to servers 16, 18. It will be appreciated that multipleclient computers, as well as other devices, may be coupled to internalnetworks 20, 22 consistent with the invention.

[0043] One manner of interfacing a vendor site with a customer site isvia Internet 28, as shown for customers 1 and 2. Through the use of theInternet, a ubiquitous communication path to a vendor site is easilyprovided, and through the use of conventional security tools, securecommunications between vendor and customer sites may be obtained. Itshould be appreciated that each customer site may be connected to theInternet via a continuous link, or in the alternative, via a dial-uplink as is well known in the art.

[0044] For some customer implementations, a direct point-to-pointinterconnection may be desired, e.g., as with interconnection 30illustrated between vendor site 12 and customer site 14 for customer N.In such an implementation, remote access devices 32, 34 would typicallybe utilized at each site 12, 14 to provide the necessaryinterconnection. For example, each device 32, 34 may be a dial-up modemor similar private communications path. Other manners of interfacing acustomer site with a vendor site may be used in the alternative.

[0045] One important aspect of providing product support in the mannerdescribed herein, and in particular for the purpose of identifying anddiagnosing customer problems, is the incorporation of a cross-customerknowledge base 36 in vendor site 12, which includes problemidentification, solution information, operational and environmental databased upon information collected from multiple customers. In addition,in the illustrated implementation each customer site includes localstorage 38 for customer data, in particular, operational data associatedwith various operating characteristics of the supported product. As willbe discussed in greater detail below, the operational data mayincorporate any performance, configuration, runtime, or other data thatcharacterizes the operation of a supported product, and which is capableof being monitored for the purpose of problem identification oroptimization of operation efficiency. In the illustrated implementation,typically such operational data is forwarded to the vendor site andstored in centralized storage, e.g., as represented at 40. In someimplementations, the operational data may be stored directly inknowledge base 36, whereby separate storage for the operational data ofeach customer would not be required.

[0046] It will be appreciated that product support agent server 16, eachsupported product 18, each workstation 24, 26 and any otherinterconnected device may be implemented using practically any type ofcomputer, computer system or other programmable electronic device,including a client computer, a server computer, a portable computer, ahandheld computer, an embedded controller, etc. Moreover, each suchdevice may be implemented using multiple interconnected computers and/orelectronic devices, e.g., in a cluster or other distributed computingenvironment. A number of the devices illustrated in FIG. 1 each comprisean “apparatus” that also may be referred to hereinafter as a “computer”;however, it should be appreciated the term “apparatus” may also includeother suitable programmable electronic devices consistent with theinvention.

[0047] Each of the aforementioned devices, when implemented ascomputers, will typically include one or more processors coupled to amemory. The memory may represent the random access memory (RAM) devicescomprising the main storage of a computer, as well as any supplementallevels of memory, e.g., cache memories, non-volatile or backup memories(e.g., programmable or flash memories), read-only memories, etc. Inaddition, a memory may be considered to include memory storagephysically located elsewhere in a computer, e.g., any cache memory in aprocessor, as well as any storage capacity used as a virtual memory,e.g., as stored on a mass storage device or on another computer coupledto such a computer via network or other form of interconnection.

[0048] It will also be appreciated that each computer typically receivesa number of inputs and outputs for communicating information externally.For interface with a user or operator, a computer may include one ormore user input devices (e.g., a keyboard, a mouse, a trackball, ajoystick, a touchpad, and/or a microphone, among others) and a display(e.g., a CRT monitor, an LCD display panel, and/or a speaker, amongothers). Otherwise, user input may be received via another computer ordevice interfaced with a computer over a network.

[0049] For additional storage, each computer may also include one ormore mass storage devices, e.g., a floppy or other removable disk drive,a hard disk drive, a direct access storage device (DASD), an opticaldrive (e.g., a CD drive, a DVD drive, etc.), and/or a tape drive, amongothers. Furthermore, a computer may include an interface with one ormore networks (e.g., a LAN, a WAN, a wireless network, and/or theInternet, among others) to permit the communication of information withother computers coupled to the network.

[0050] Each computer typically operates under the control of anoperating system, and executes or otherwise relies upon various computersoftware applications, components, programs, objects, modules, datastructures, etc. Moreover, various applications, components, programs,objects, modules, etc. may also execute on one or more processors inanother computer coupled to a computer via a network, e.g., in adistributed or client-server computing environment, whereby theprocessing required to implement the functions of a computer program maybe allocated to multiple computers over a network.

[0051] In general, the routines executed to implement the embodiments ofthe invention, whether implemented as part of an operating system or aspecific application, agent, component, program, object, module orsequence of instructions, or even a subset thereof, will be referred toherein as “computer program code,” or simply “program code.” Programcode typically comprises one or more instructions that are resident atvarious times in various memory and storage devices in a computer, andthat, when read and executed by one or more processors in a computer,cause that computer to perform the steps necessary to execute steps orelements embodying the various aspects of the invention. Moreover, whilethe invention has and hereinafter will be described in the context offully functioning computers and computer systems, those skilled in theart will appreciate that the various embodiments of the invention arecapable of being distributed as a program product in a variety of forms,and that the invention applies equally regardless of the particular typeof signal bearing media used to actually carry out the distribution.Examples of signal bearing media include but are not limited torecordable type media such as volatile and non-volatile memory devices,floppy and other removable disks, hard disk drives, magnetic tape,optical disks (e.g., CD-ROM's, DVD's, etc.), among others, andtransmission type media such as digital and analog communication links.

[0052] In addition, various program code described hereinafter may beidentified based upon the application within which it is implemented ina specific embodiment of the invention. However, it should beappreciated that any particular program nomenclature that follows isused merely for convenience, and thus the invention should not belimited to use solely in any specific application identified and/orimplied by such nomenclature. Furthermore, given the typically endlessnumber of manners in which computer programs may be organized intoroutines, procedures, methods, modules, objects, and the like, as wellas the various manners in which program functionality may be allocatedamong various software layers that are resident within a typicalcomputer (e.g., operating systems, libraries, API's, applications,applets, etc.), it should be appreciated that the invention is notlimited to the specific organization and allocation of programfunctionality described herein.

[0053] Those skilled in the art will recognize that the exemplaryenvironment illustrated in FIG. 1 is not intended to limit the presentinvention. Indeed, those skilled in the art will recognize that otheralternative hardware and/or software environments may be used withoutdeparting from the scope of the invention.

[0054] As discussed above, a supported product may be any number ofcomputer-related products consistent with the invention. For example, asupported product may be a computer, which may or may not also host anagent server and other product support functionality, as is shown inFIG. 1. In the alternative, a supported product may comprise aninstalled component that is internal to a computer upon which theproduct support software components for a customer site are resident.FIG. 2, for example, illustrates a computer 50 having resident thereon asupported product 52 and an agent server 54. The supported product mayinclude, for example, any number of different software or hardwareproducts. For example, from a software standpoint, a supported productmay include an application, operating system, microcode, firmware,utility, tool, or practically any other type of software capable ofbeing resident on a computer or one of its components. From a hardwarestandpoint, the supported product may comprise a peripheral component,an I/O card, a disk drive, a processor, a memory, or practically anyother hardware component internal to a computer.

[0055] As another example, a supported product may be interfaced with acomputer that is the same or different from that which hosts the productsupport components for a particular customer. FIG. 3, for example,illustrates a computer 60 upon which is resident an agent server 62.Also shown in FIG. 3 is a second computer 64 networked with computer 60,and upon which is resident a supported product 66. In still otherinstances, a supported product (e.g., product 68) may be wholly separatefrom a computer, but may comprise another form of hardware componentthat is interfaced with computer 60, but which is not necessarily housedwithin a computer. For example, network-based storage, network hardware,and practically any other type of electronic device capable of beingaccessed via a computer, may be supported in the manner describedherein.

[0056] It should also be appreciated that a product support systemconsistent with the invention may support a single type of product, ormultiple types, releases, versions, etc., of products. Moreover, asupported product may include hardware, software, or a combination ofthe two (e.g., an I/O card may incorporate firmware). Furthermore, theproduct support components at a customer site may be disposed onmultiple computers, and the supported product may comprise multiplecomputers, e.g., a cluster or other system of multiple computers. Thenumbers, types and variations of computer-related products that may besupported in the manner described herein is practically innumerable, sothe invention should not be limited to the particular implementationsdisclosed herein.

[0057] In the illustrated embodiment, the distributed product supportsystem is capable of hosting and executing agents that are resident on asupport server, resident on a product server, or both. Moreover, agentsrunning on the same or different servers may be in communication withone another, while certain agents may execute at different times ondifferent servers, and be transferred from server to server as required.Through the provision of an agent platform both on the product supportserver and on a supported product server, a significant degree offlexibility is therefore often attained.

[0058] It will be appreciated that product support need not be providedby the manufacturer, vendor or provider of a particular computer-relatedproduct being supported. Put another way, product support may beprovided by an entity other than that which originally provided thecomputer-related product. In addition, it will be appreciated that aproduct support system may support multiple products, including multipleproducts on behalf of a single customer and/or multiple productsdisposed at multiple customer sites.

[0059]FIG. 4 illustrates the principal software components utilized indistributed agent-based product support system 10, where a supportintelligent agent server 16, resident at a vendor site, is interfacedwith a product intelligent agent server 18, resident on a customer site.As used hereinafter, the term “support” will generally be utilized inconnection with the vendor or other entity providing product support,while “product” will refer to the customer or other user of a supportedproduct.

[0060] In the illustrated implementation, each server 16, 18, functionsas a product support program that is utilized in the overall system toprovide a portion of the product support functionality described herein.On each server 16, 18 is provided an agent pool 80, 82. Within supportagent pool 80 is typically provided a number of types of agentsincluding shipped product agents 88, downloadable product agents 90,support only agents 92, knowledge base agents 94 and third party agents96.

[0061] Shipped product agents 88 refer to intelligent agents suitablefor execution on a supported product, and which are associated with agiven release of that product (i.e., they are “shipped” with theproduct). Downloadable product agents 90, on the other hand, refer tointelligent agents that are created subsequent to shipping of aparticular release (i.e., they are “off-release”), and are capable ofbeing downloaded from the support intelligent agent server to a productintelligent agent server for a particular customer.

[0062] Support only agents 92 are intelligent agents that are configuredfor execution only on support intelligent agent server 16, and are notintended to be distributed to customer sites. Knowledge base agents 94refer to analysis or problem resolution-type agents that are configuredto access the operational data collected from multiple customers toidentify potential problems, as well as develop potential solutionstherefrom.

[0063] Third party agents 96 refer to intelligent agents provided byother entities, but which are capable of being incorporated into system10. For example, a third party agent 96 may be provided by a software orcomponent vendor to assist in the support of that software or componenton a larger overall supported product. In other environments, thirdparty agents may be standardized agents developed by other entities, butwhich are suitable for implementation in providing product support of aparticular product. Moreover, in some implementations, some form ofencapsulation of third party agents may be required so that such agentswill function in the agent environment of system 10.

[0064] Product agent pool 82 includes a plurality of agents, such asshipped product agents 100, downloaded product agents 102 and thirdparty agents 104. Of the shipped product agents, these agents aretypically duplicates of the corresponding shipped product agents 88found in support agent pool 80, while downloaded product agents 102 aretypically copies of the downloadable product agents 90 from supportagent pool 80 that have been downloaded to a particular customer'sproduct intelligent agent server. Third party agents 104 may beidentical to those in support agent pool 80, or in the alternative, mayrepresent particular types of third party agents that are suitable forexecution on a customer's system, rather than on a support system,should a particular vendor provide agents suited for execution on suchsystems.

[0065] It will be appreciated that each agent 88-104 may perform anynumber of product support operations consistent with the invention. Forexample, any combination of monitoring operations, data collectionoperations, data analysis operations, agent selection operations, agentcreation operations, configuration detection and/or setting operations,performance tuning operations, etc., may be implemented within anintelligent agent consistent with the invention. Moreover, pools 80, 82may include other types of agents, or only a subset of the agent typesillustrated in FIG. 4.

[0066] The underlying framework and execution environment for the agentsin pools 80, 82 are provided by agent platform and runtime blocks 106,108 on servers 16, 18, respectively. While a purely proprietaryexecution environment may be utilized in some environments, it may bedesirable in other environments to provide a standardized, extensibleframework to facilitate the creation, execution and interaction ofagents in a product support environment. For example, in the illustratedembodiment, the Agent Building and Learning Environment (ABLE)framework, component library, and productivity toolkit fromInternational Business Machines Corporation may be utilized as theunderlying environment for implementing product support system 10. Theconfiguration and use of the ABLE environment is understood by one ofordinary skill in the art. However, it should be appreciated that a widevariety of other agent environments, as well as custom or proprietaryenvironments, may be used in the alternative. Moreover, it should alsobe appreciated that an agent platform may be distributed in nature insome embodiments, e.g., the workload of a particular product or supportagent platform may be distributed among multiple computers or systems.Therefore, the invention should not be limited to the particularenvironment described herein.

[0067] Each server 16, 18 also utilizes an agent library managementcomponent 110, 112 that is utilized in managing the agents in the agentpool. Furthermore, in support intelligent agent server 16, an agentbuilder component 114 is provided to assist in the creation of newintelligent agents. Furthermore, an agent publishing control component116 is utilized to provide control over the publishing of new agents ina manner that associates distribution control information with suchagents, as will be discussed in greater detail below.

[0068] In general, from a problem determination or identificationstandpoint, operational data is collected from one or more customersites and analyzed, with either such operations occurring on the productserver and/or on the support server. For example, local environmentaldata may be stored as shown at 118 in any customer site and accessiblevia product intelligent server 18. Within such environmental data may beoperational data 120 collected by server 18. Such operational data istypically forwarded in some manner to the support intelligent agentserver 16, where the operational data is collected as shown at 122.After aggregating and analyzing the collected data, a cross-customerknowledge base 124 is populated with problem identification, solutioninformation, operational and environment data suitable for remedyingcustomer problems or optimizing their environment. It is in part throughthis unique architecture that various enhanced functionalities such asautomated learning capability may be incorporated into a product supportsystem consistent with the invention.

[0069] It will be appreciated that the architecture illustrated in FIG.4 is merely exemplary in nature. Other architectures, as well as otherarrangements and types of software components, may be utilized in otherenvironments.

[0070] Through the use of the above-identified framework, a wide varietyof product support operations may be performed to remedy undesirableoperational conditions in a customer product. An undesirable operationalcondition may include various errors, bugs or other technical problemsthat prevent the correct operation of the system, or otherwise causesystem crashes, incorrect data, or other hardware or software failures.An undesirable operational condition may also include non-optimaloperation, e.g., where a computer-related product or another productassociated therewith performs at a level that is non-optimal, andcapable of being improved. It should be appreciated that an undesirableoperational condition may be related directly with respect to thecomputer-related product, or it may be an undesirable condition withanother product, where the undesirable operational condition is due to aproblem or defect in the computer-related product (e.g., where acomputer system runs poorly, or a particular software applicationcrashes, due to a defect in another software application).

[0071] The overall sequence of operations that occur in connection withremedying problems in the product support system disclosed herein isillustrated generally at 150 in FIG. 5. In this exemplary sequence ofoperations, operational data is collected and thereafter analyzed toidentify undesirable operational conditions, and based upon suchidentification, a remedy agent is selected or created and thereafterpublished to remedy the undesirable condition on a customer product. Awide number of variations in this overall sequence of operations will beappreciated from a further reading of the material presented herein.

[0072] In the illustrated implementation, the sequence illustrated at150 begins in block 152 by dispatching monitor agents for the purpose ofcollecting operational data from one or more customer sites. The monitoragents may be dispatched to the actual customer sites for execution onthe customers' product intelligent agent servers, or in the alternative,one or more agents agent may be executed or dispatched on the supportintelligent agent server, with that agent provided with remote accesscapability to retrieve operational data from the customer sites. Thus,data may be brought to the agents, or vice versa, in differentembodiments consistent with the invention.

[0073] In the alternative, monitor agents may already be installed ateither the customer sites or the vendor site, whereby separate dispatchoperation would not be required. In such instances, the monitor agentsmay run continuously, or may be invoked in block 152 on demand.

[0074] Next, once the monitor agents are configured for collecting data,operational data is collected as shown in block 154. The operationaldata may include any number of operational characteristics of acomputer-related product or any systems or components associatedtherewith, and the collection process may be ongoing, or may comprisecollecting data for a short time period, or even taking a singlesnapshot of the configuration of a particular product at a given time.Collection of the operational data also typically results in theoperational data being transmitted to the product intelligent agentserver so that centralized analysis thereof can be performed.

[0075] Next, in block 156, the collected operational data is analyzed,and from such analysis, an undesirable operational condition isidentified as shown in block 158. Then, based upon such identification,an appropriate remedy agent is either selected or created. If a suitableagent already exists, that agent will be selected to remedy the problem.If no such agent exists, one may be created, with an appropriatedistribution control associated with that agent, as shown in block 160.The use of distribution controls to limit the distribution of agents isdiscussed in greater detail below.

[0076] Once the appropriate remedy agent has been selected or created,that agent is published as shown in block 162, and distributed orotherwise executed to remedy the undesirable condition on one or morecustomer products. Subsequent to block 162, the problem is remedied, andthe operations shown in FIG. 5 are complete.

[0077] It should be appreciated that the set of customer sites that aremonitored need not be the same as the set of customer sites that receivethe remedy agent, e.g., where a remedy agent is dispatched first on alimited basis prior to dispatching the agent to the entire customer basefor a product. Moreover, a remedy agent may execute on a support agentserver, a product agent server, or both, and such an agent may rely onmultiple agents to collectively perform desired tasks.

[0078] Implementation of blocks 152-162 of FIG. 5 may occur in a widevariety of manners. For example, FIG. 6 illustrates one such division ofresources to remedy a customer problem. In this figure, a productsupport system 170 is illustrated including a vendor site 172 and aplurality of customer sites 174. Within vendor site 172 is amonitor/collection agent 176 that interfaces with a plurality ofmonitor/collection agents 178 resident on each of the customer sites174. In this configuration, each agent 178 collects operational dataappropriate for that particular customer, and forwards such data toagent 176 for collection. In many instances, the operational datacollected by agent 176 is forwarded to cross-customer knowledge base 180for the purpose of analysis by a data analysis agent 182. In someinstances, however, agent 176 may be provided with sufficient logic toidentify known problems and invoke operations on data analysis agent 182without storing the collected operational data in knowledge base 180.For example, if monitor/collection agent 176 detected a known problemhaving a known remedy, agent 176 may invoke agent 182 to initiate theappropriate remedy.

[0079] In many situations, however, data analysis agent 182 utilizesvarious learning algorithms such as pattern matching, to attempt toidentify undesirable operational conditions from the operational datacollected from one or more customers. The results of such analysis areforwarded to a report agent 184, which reports the results of theanalysis at appropriate intervals. Based upon the analysis reported byagent 184, an undesirable operational condition identified thereby maybe utilized to perform agent selection or creation in block 186. In manyenvironments, block 186 is predominantly a manual operation,particularly with regard to the creation of new agents, although in someenvironments, sufficient functionality may be provided to permit theautomated creation of intelligent agents.

[0080] For example, automated functionality may be utilized to eithercustom configure an agent from a plurality of modules, or in thealternative, select an agent from a pool of like agents, e.g., asdescribed in U.S. patent application Ser. Nos. 08/826,107, 08/822,933,filed on Mar. 21, 1997 and Ser. No. 09/100,595 filed on Jun. 19, 1998,by Bigus et al. which are incorporated by reference herein. Furthermore,in some environments, the decision of whether a new agent needs to becreated or selected from a pre-existing pool may be made automatically,with the creation of new agents performed as a manual process, e.g.,using the agent builder component 114 of FIG. 4.

[0081] The result of agent selection/creation is the dispatch of aremedy agent from agent pool 188. As shown in FIG. 6, a remedy agent 190may be resident on a vendor site to apply the appropriate remedialactions. In the alternative, a remedy agent may be dispatched to one ormore customers as shown at 192, with each customer receiving the samecopy or a customized copy of the remedy agent. Furthermore, in someenvironments, multiple remedy agents may be dispatched and operate onthe vendor site, the customer site, or in both, with appropriatecommunications between such agents to collectively perform the desiredtask.

[0082] Various modifications may be made to the implementationillustrated in FIG. 6. For example, monitoring and collecting ofoperational data may occur solely on a customer site or on a vendorsite, and need not require the interaction of agents on both such sites.In addition, monitoring and collection of operational data may beperformed by non-agent software, or may be input by a user in somecircumstances. Moreover, a combination of manually-input operationaldata and collected operational data may also be utilized in performingdata analysis consistent with the invention.

[0083] Furthermore, other remedial operations may be performed inconnection with or in lieu of the dispatch of a remedy agent in someenvironments. For example, some remedies may involve the execution orinvocation of non-agent program code, or may involve manual interventionby product support personnel and/or a customer. In the latter instance,a remedy may include simply the notification to a user of the correctiveactions that need to be undertaken to remedy a particular condition. Inaddition, remedial operations performed by a remedy agent or otherentity may include refinement of monitoring operations to collectdifferent and/or more specific operational data, in addition to or inlieu of various corrective actions that might be undertaken to remedy anundesirable operational condition.

[0084] Furthermore, various manners of initiating a problem remedyingoperation may be used. For example, monitoring may occur continuously,with identification of a problem triggering a remedial operationwhenever undesirable operational conditions are detected. In otherembodiments, a customer may notice an undesirable operational condition,and initiate the collection of operational data and analysis thereof topotentially remedy the problem. In addition, analysis of operationaldata may require manual involvement, e.g, by product support personnel.

[0085] Moreover, in some implementations, publication of a remedy agentmay occur in stages. For example, where an undesirable operationalcondition is detected in one customer product, an appropriate remedyagent may be published only for operation on behalf of that customer.Once the agent has been found to have adequately remedied a problem(which may occur only after the agent is modified), the status of theagent may be changed such that greater availability of the agent forother customers is enabled. Thus, for example, after a particular agenthas been adequately tested for one particular customer, that agent maythereafter be dispatched to other customers to address similar problemsexperienced by those customers.

[0086] The analysis of operational data may occur in a number ofmanners, and may include a number of known artificial intelligence anddecision logic techniques known in the art. For example, as shown inFIG. 7, a structured framework 200 may be provided for analyzingoperational data, where a rule set 202 is based upon a set of ruledefinitions 204 In the illustrated implementation, for example, the ABLEenvironment may be utilized, with rule definitions defined in astandardized markup language format such as XML and/or defined in atextual format. Via these rule definitions, various types of logicmodules, or “beans” may be invoked to perform various analysisoperations. For example, forward chain logic 208, pattern matching logic210, pattern matching RETE net logic 212, fuzzy logic 214, script logic216, mixed inference logic 218, backward chain logic 220 and predicatelogic 222 may be invoked in different combinations to perform variousanalysis techniques as desired. The implementation of analysis rulesbased upon this framework would be well within the ability of one ofordinary skill in the art having the benefit of the instant disclosure.However, it should be appreciated that other logic techniques, includinghard-coded logic and other combinations of artificial intelligenttechniques (e.g., various other neural network technologies, fuzzy logictechnologies, non-linear logic, etc.) may be used in the alternative.

[0087] Using this logic framework, an analysis agent may be configuredto analyze the operational data from one or more customers to identifyeither an undesirable operational condition for a particular customer(e.g., where a particular supported product installation is operatingoutside of the specifications of other installations thereof), or toidentify an undesirable operational condition across the customer base(e.g., where a particular error is found to occur repeatedly across thecustomer base). For example, pattern matching may be performed on theoperational data to identify recurring patterns that are indicative ofan undesirable operational condition.

[0088] As also described above, it may be desirable to providedistribution control for intelligent agents utilized in system 10,providing various publication levels that limit the distribution ofparticular agents based upon the desired use of such agents. As shown inFIG. 8, for example, a publish agent routine 240 begins in block 242 bycreating an appropriate agent header. In an environment such as theaforementioned ABLE environment, agents may be defined via headerscreated using a standardized language such as XML. Under such aframework, characterization of a framework may be embodied within theheader, and distribution control information may be incorporated intosuch characterization information. As shown in block 244, a publishinglevel is determined for a published agent based upon factors such as theskills required to use the agent, the intended use for the agent, thedesired control for the agent, the degree the agent is tied to theknowledge base or to environmental data, and the environments in whichthe agent is intended to be executed. Once a publishing level isdetermined, it is set in the agent header in block 246.

[0089] In the illustrated embodiment, for example, agents may beclassified as “internal”, “external” or “base”. Table I belowillustrates exemplary characteristics of each type of agent based uponthe aforementioned characteristics. TABLE I Agent Publication LevelCharacteristics Internal External Base Skill Required ExpertAdministrator Novice Intended Use Support IT Operations Common DesiredControl Strong Selective All Knowledge Base Ties Tight Remotable LooseEnvironmental Data Ties Loose Remotable Tight Distribution Remote (Data)Remote (Agent) Resident

[0090] A base agent, for example, is intended to be used as an agentprovided to a customer within the shipped release of a product.Accordingly, as shown in block 248, it is typically desirable with suchan agent to incorporate the agent into the next release of the shippedproduct. Moreover, for situations where a customer has an earlierrelease of a product, it may be desirable to permit that customer todownload the agent for incorporation into the customer's system. Assuch, it may be desirable to also transmit the agent to the customer'ssystem on demand, as shown in block 250.

[0091] For an external agent, it is typically desirable to transmit theagent to the customer system on demand, as shown in block 250. With sucha system, typically the agent is executed without substantial expertiserequired of the customer.

[0092] For an internal agent, such an agent is generally limited to useon a support server by qualified product support personnel. In someinstances, however, it may be desirable to distribute the agent to acustomer site. Thus, as shown in block 252, it may be desirable totransmit the agent, but in this case only under the guidance of productsupport personnel.

[0093] Therefore, it will be appreciated that, in general the provisionof distribution controls permits product support personnel to controlthe deployment of agents, in particular remedy agents, in such a mannerthat the availability of a particular agent will be dependent upon thecomplexity of the problem and its solution, as well as thematurity/effectiveness/accuracy of the agent (e.g., based upon how manyother customer products have been successfully remedied by a particularagent), and even a potential desire to keep certain agents proprietaryfor exclusivity reasons.

[0094] It will be appreciated that other publication levels may beassociated with particular agents, and that other publishing guidelinesand frameworks may be utilized in the alternative. For example, asdiscussed above, certain agents may be characterized as knowledge baseor support only agents, wherein no distribution to other computers ispermitted. In still other embodiments, distribution of an agent from asupport server to a product server may be prohibited. Moreover,characterization of an agent with a particular distribution control maybe made in manners other than through the use of a header, e.g., via aseparate database, via various locking mechanisms, encryptionmechanisms, signature technologies, etc. Therefore, the invention is notlimited to the particular implementation discussed herein.

[0095] Another capability supported by the herein-described supportsystem is the ability to integrate agents from multiple vendors tocollectively remedy undesirable operations of a customer. For example,it may be possible that both a hardware manufacturer and a softwarevendor will have interoperability problems that require remedial actionsto be taken with respect to both a software product and an underlyinghardware platform. FIG. 9, for example, illustrates an exemplarycondition where a hardware manufacturer, which in this example alsoserves as the primary product support provider, requires the additionalassistance of a software vendor functioning as a third party. FIG. 9specifically illustrates a system 270 including a product support agentpool 272 and a third party agent pool 274. Through the ability of agentsto communicate with one another, as well as to invoke one another andinitiate certain actions with one another, it will be appreciated how asequence of operations may be performed to remedy an undesirableoperational condition on a customer system.

[0096] In the environment illustrated in FIG. 9, for example, a systemconfiguration manager agent 276 may control the overall remedialoperation by interacting with a pair of hardware-related agents 278,280, as well as a series of additional agents 282, 284 and 286 providedby a third party and related to the software provided by that thirdparty.

[0097] Consider, for example, the situation where a particular softwareprogram requires a different setting in the hardware or the operatingsystem in order to properly operate on a particular system. Moreover,the software requires specific configuration settings itself to fullyremedy a particular problem. In such an instance, system configurationmanager agent 276 may address the hardware problems by invoking a deviceconfiguration checker agent 278 to check the configuration of aparticular hardware device. Based upon the configuration data obtainedfrom agent 278, agent 276 may then invoke a device configurationmodifier agent 280 to set the configuration data to appropriate valuesto remedy the problem. In addition, either concurrently with, subsequentto, or prior to addressing the hardware issue, agent 276 may invoke athird party configuration manager agent 282 that interacts with a thirdparty data analyzer agent 284 and a third party configuration modifieragent 286 to handle the detection and modification of configurationsettings in the third party software, thus resulting in a system-wideresolution of the customer's problem.

[0098] Now turning to FIG. 10, to further illustrate the operation ofthe various embodiments of the invention, an exemplary product supportsystem 300 is illustrated, which is suitable for use in tuning theperformance of a computer-related product, here a groupware server 302.In system 300, the performance of an application (here groupware) isoptimized by monitoring and predicting its performance characteristicsand then automatically adjusting control parameters in order to providea desired service level. In this exemplary embodiment, the applicationis a Lotus Notes server, which often can be subject to a widely varyingworkload. System 300 may be used to optimize an average response timefor specific classes of transactions.

[0099] In this exemplary implementation, the product support systemrelies on three agents (or optionally, modules within a single agent),including an adaptor agent 304 that monitors workload and performanceand sets configuration parameters on the Lotus Notes server, a neuralsystem model agent 308 that attempts to learn so as to mimic theperformance response characteristics of the Lotus Notes server 302 overa range of workloads and control settings, and another neural controlleragent 306 that is adapted on-line to determine the appropriate controlsettings for optimal application performance.

[0100] To implement product support in this environment, the neuralsystem model agent 308 is typically trained off-line using data obtainedfrom a workload simulator with varied control settings. Thereafter, anadministrator 310 may set a desired performance value, which is fed toagent 306.

[0101] During runtime, the Lotus Notes Server 302 is subjected to avarying workload while the adaptor agent 304 monitors the resultingserver performance values. In addition, the neural controller agent 306is adapted on-line by taking the difference between the desired andactual performance values, back propagating those values through theneural system model agent 308 and using the control deltas as targetvalues for the neural controller agent 306.

[0102] It will be appreciated that the aforementioned example is but onepossible implementation of a product support process consistent with theinvention. Thus, the invention is not limited to this particularexample.

[0103] Various modifications may be made to the illustrated embodimentsconsistent with the invention. For example, not all of the tasksassociated with providing product support need be implemented usingintelligent agents. As such, each of monitoring data, collecting data,analyzing data, identifying undesirable operational conditions,selecting agents, creating agents, and the like may be implemented usingnon-agent technology, or may incorporate (manual) user involvement, insome embodiments. Moreover, any of monitoring data, collecting data,analyzing data, identifying undesirable operational conditions,selecting agents, creating agents, and the like may be performed at acustomer site, at a product support or vendor site, at a third partysite, or any combination of the same.

[0104] Other modifications will be apparent to one of ordinary skill inthe art. Therefore, the invention lies in the claims hereinafterappended.

What is claimed is:
 1. An apparatus, comprising: (a) a memory withinwhich is resident a plurality of intelligent agents and distributioncontrol information associated with each intelligent agent that definesdistribution rights for such intelligent agent; and (b) program codeconfigured to control distribution of an intelligent agent in responseto a request to access such intelligent agent based upon thedistribution control information associated with such intelligent agent.2. The apparatus of claim 1, wherein the program code is furtherconfigured to set distribution control information for an intelligentagent in connection with publishing the intelligent agent.
 3. Theapparatus of claim 2, wherein the distribution control information isdisposed in a header for each intelligent agent.
 4. The apparatus ofclaim 1, wherein the distribution control information defines apublishing level that prohibits distribution of an intelligent agent toanother computer.
 5. The apparatus of claim 1, wherein the distributioncontrol information defines a publishing level that permits distributionof an intelligent agent to another computer only in response toauthorization from product support personnel.
 6. The apparatus of claim1, wherein the plurality of intelligent agents are each configured toperform product support operations in connection with supporting acomputer-related product, and wherein the distribution controlinformation identifies a first intelligent agent as an internal agentconfigured to execute on a product support computer, and a secondintelligent agent as an external agent configured to execute on acustomer computer configured to utilize the computer-related product. 7.The apparatus of claim 6, wherein the distribution control informationfurther identifies a third intelligent agent as a base agent associatedwith a particular release of the computer-related product.
 8. A methodof controlling distribution of an intelligent agent, the methodcomprising: (a) maintaining in a memory distribution control informationthat defines distribution rights to each of a plurality of intelligentagents; and (b) controlling distribution of an intelligent agent amongthe plurality of intelligent agents in response to a request to accesssuch intelligent agent based upon the distribution control informationassociated with such intelligent agent.
 9. The method of claim 8,further comprising setting distribution control information for anintelligent agent in connection with publishing the intelligent agent.10. The method of claim 9, wherein the distribution control informationis disposed in a header for each intelligent agent.
 11. The method ofclaim 8, wherein the distribution control information defines apublishing level that prohibits distribution of an intelligent agent toanother computer.
 12. The apparatus of claim 8, wherein the distributioncontrol information defines a publishing level that permits distributionof an intelligent agent to another computer only in response toauthorization from product support personnel.
 13. The method of claim 8,wherein the plurality of intelligent agents are each configured toperform product support operations in connection with supporting acomputer-related product, and wherein the distribution controlinformation identifies a first intelligent agent as an internal agentconfigured to execute on a product support computer, and a secondintelligent agent as an external agent configured to execute on acustomer computer configured to utilize the computer-related product.14. The method of claim 13, wherein the distribution control informationfurther identifies a third intelligent agent as a base agent associatedwith a particular release of the computer-related product.
 15. A programproduct, comprising: (a) an intelligent agent; (b) a header associatedwith the intelligent agent, the header including distribution controlinformation that defines distribution rights to the intelligent agent;and (c) a signal bearing medium bearing the header and the intelligentagent.
 16. The program product of claim 15, wherein the header isdefined in a markup language.
 17. The program product of claim 16,wherein the header is defined in XML.
 18. A program product, comprising:(a) program code configured to control distribution of an intelligentagent in response to a request to access such intelligent agent byaccessing distribution control information associated with suchintelligent agent, wherein such distribution control information definesdistribution rights for such intelligent agent; and (b) a signal bearingmedium bearing the program code.
 19. The program product of claim 18,wherein the signal bearing medium includes at least one of atransmission medium and a recordable medium.
 20. The program code ofclaim 18, wherein the program code is configured to access thedistribution control information for such intelligent agent by accessinga header associated with such intelligent agent, wherein the header isdefined in a markup language.